import config from "config";

/**
 * http请求
 * @param {Object} params
 */
function request(params) {
  // console.log(params)
  const token = uni.getStorageSync("token");
  return new Promise((resolve, reject) => {
    try {
      params.url = config.domain + params.url;
      params.method = params.method || "POST";

      if (params.loadingTip === "" || params.loadingTip) {
        uni.showLoading({
          title: params.loadingTip,
          mask: true,
        });
      }
      uni.request({
        ...params,
        header: {
          token: token || "",
        },
        success: (res) => {
			 resolve(res.data);
          // console.log(res)
          // 防止组件那边使用showLoading这里提前关闭
          if (params.loadingTip === "" || params.loadingTip) {
            uni.hideLoading();
          }
          // 这里判断code为1，组件那边不需要再判断then回调就是成功
          if (res.statusCode === 200 && res.data.code === 1) {
            resolve(res.data);
          } else if (res.statusCode === 401 || res.data.code === 401) {
            // 未登录,或登录过期
            toLogin()
          } else {
            setTimeout(() => {
              uni.showToast({
                title: res.data?.msg || "请求失败",
                icon: "none",
              });
            }, 0);
            reject(res.data || {});
          }
        },
        fail: (err) => {
          // console.log('失败')
          // console.log(err)
          uni.hideLoading();
          if (err.data.code === 401) {
            toLogin()
          }
          reject(err || {});
        },
      });
    } catch (err) {
      reject(err);
    }
  });
}

function toLogin() {
  // uni.$u.toast("登录过期");
  uni.clearStorageSync();
  setTimeout(() => {
    uni.reLaunch({
      url: "/pages/login/login",
    });
  }, 600);
}

export default request;
